using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("SceneMgr")]
	public class SceneMgr : MonoBehaviour
	{
		public enum Mode
		{
			INVALID,
			// Token: 0x0400B682 RID: 46722
			STARTUP,
			// Token: 0x0400B683 RID: 46723
			LOGIN,
			// Token: 0x0400B684 RID: 46724
			HUB,
			// Token: 0x0400B685 RID: 46725
			GAMEPLAY,
			// Token: 0x0400B686 RID: 46726
			COLLECTIONMANAGER,
			// Token: 0x0400B687 RID: 46727
			PACKOPENING,
			// Token: 0x0400B688 RID: 46728
			TOURNAMENT,
			// Token: 0x0400B689 RID: 46729
			FRIENDLY,
			// Token: 0x0400B68A RID: 46730
			FATAL_ERROR,
			// Token: 0x0400B68B RID: 46731
			DRAFT,
			// Token: 0x0400B68C RID: 46732
			CREDITS,
			// Token: 0x0400B68D RID: 46733
			RESET,
			// Token: 0x0400B68E RID: 46734
			ADVENTURE,
			// Token: 0x0400B68F RID: 46735
			TAVERN_BRAWL,
			// Token: 0x0400B690 RID: 46736
			FIRESIDE_GATHERING,
			BACON,
			GAME_MODE,
			PVP_DUNGEON_RUN,
			BACON_COLLECTION,
			LETTUCE_VILLAGE,
			LETTUCE_BOUNTY_BOARD,
			LETTUCE_MAP,
			LETTUCE_PLAY,
			LETTUCE_COLLECTION,
			LETTUCE_COOP,
			LETTUCE_FRIENDLY,
			LETTUCE_BOUNTY_TEAM_SELECT,
			LETTUCE_PACK_OPENING
		}

		public enum TransitionHandlerType
	{
		// Token: 0x0400B69F RID: 46751
		INVALID,
		// Token: 0x0400B6A0 RID: 46752
		SCENEMGR,
		// Token: 0x0400B6A1 RID: 46753
		CURRENT_SCENE,
		// Token: 0x0400B6A2 RID: 46754
		NEXT_SCENE
	}

		public GameObject m_StartupCamera => method_3<GameObject>("m_StartupCamera");

		public static float SCENE_UNLOAD_DELAY => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "SceneMgr", "SCENE_UNLOAD_DELAY");

		public static float SCENE_LOADED_DELAY => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "SceneMgr", "SCENE_LOADED_DELAY");

		public int m_startupAssetLoads => method_2<int>("m_startupAssetLoads");

		public Mode m_mode => method_2<Mode>("m_mode");

		public Mode m_nextMode => method_2<Mode>("m_nextMode");

		public Mode m_prevMode => method_2<Mode>("m_prevMode");

		public bool m_reloadMode => method_2<bool>("m_reloadMode");

		public PegasusScene m_scene => method_3<PegasusScene>("m_scene");

		public bool m_sceneLoaded => method_2<bool>("m_sceneLoaded");

		public bool m_transitioning => method_2<bool>("m_transitioning");

		public bool m_performFullCleanup => method_2<bool>("m_performFullCleanup");

		public long m_boxLoadTimestamp => method_2<long>("m_boxLoadTimestamp");

		public bool m_textInputGUISkinLoaded => method_2<bool>("m_textInputGUISkinLoaded");

		public SceneMgr(IntPtr address, string className)
			: base(address, className)
		{
		}

		public SceneMgr(IntPtr address)
			: this(address, "SceneMgr")
		{
		}

		public static SceneMgr Get()
		{
			return MonoClass.smethod_15<SceneMgr>(TritonHs.MainAssemblyPath, "", "SceneMgr", "Get", Array.Empty<object>());
		}

		public void Awake()
		{
			method_8("Awake");
		}

		public void OnDestroy()
		{
			method_8("OnDestroy");
		}

		public void Start()
		{
			method_8("Start");
		}

		public void LoadShaderPreCompiler()
		{
			method_8("LoadShaderPreCompiler");
		}

		public void Update()
		{
			method_8("Update");
		}

		public void WillReset()
		{
			method_8("WillReset");
		}

		public void SetNextMode(
			SceneMgr.Mode mode, 
			SceneMgr.TransitionHandlerType transitionHandler = SceneMgr.TransitionHandlerType.SCENEMGR, 
			object sceneTransitionPayload = null)
		{
			method_8("SetNextMode",mode, transitionHandler,null,sceneTransitionPayload);
		}

		public void ReloadMode()
		{
			method_8("ReloadMode");
		}

		public Mode GetPrevMode()
		{
			return method_11<Mode>("GetPrevMode", Array.Empty<object>());
		}

		public Mode GetMode()
		{
			return method_11<Mode>("GetMode", Array.Empty<object>());
		}

		public Mode GetNextMode()
		{
			return method_11<Mode>("GetNextMode", Array.Empty<object>());
		}

		public PegasusScene GetScene()
		{
			return method_14<PegasusScene>("GetScene", Array.Empty<object>());
		}

		public void SetScene(PegasusScene scene)
		{
			method_8("SetScene", scene);
		}

		public bool IsSceneLoaded()
		{
			return method_11<bool>("IsSceneLoaded", Array.Empty<object>());
		}

		public bool WillTransition()
		{
			return method_11<bool>("WillTransition", Array.Empty<object>());
		}

		public bool IsTransitioning()
		{
			return method_11<bool>("IsTransitioning", Array.Empty<object>());
		}

		public bool IsTransitionNowOrPending()
		{
			return method_11<bool>("IsTransitionNowOrPending", Array.Empty<object>());
		}

		public bool IsModeRequested(Mode mode)
		{
			return method_11<bool>("IsModeRequested", new object[1] { mode });
		}

		public bool IsInGame()
		{
			return method_11<bool>("IsInGame", Array.Empty<object>());
		}

		public bool IsInTavernBrawlMode()
		{
			return method_11<bool>("IsInTavernBrawlMode", Array.Empty<object>());
		}

		public void NotifySceneLoaded()
		{
			method_8("NotifySceneLoaded");
		}

		public void FireScenePreUnloadEvent(PegasusScene prevScene)
		{
			method_8("FireScenePreUnloadEvent", prevScene);
		}

		public void FireSceneUnloadedEvent(PegasusScene prevScene)
		{
			method_8("FireSceneUnloadedEvent", prevScene);
		}

		public void FireScenePreLoadEvent()
		{
			method_8("FireScenePreLoadEvent");
		}

		public void FireSceneLoadedEvent()
		{
			method_8("FireSceneLoadedEvent");
		}

		public void OnFontTableInitialized(object userData)
		{
			method_8("OnFontTableInitialized", userData);
		}

		public void OnBaseUILoaded(AssetReference assetRef, GameObject go, object callbackData)
		{
			method_8("OnBaseUILoaded", assetRef, go, callbackData);
		}

		public void OnOverlayUILoaded(AssetReference assetRef, GameObject go, object callbackData)
		{
			method_8("OnOverlayUILoaded", assetRef, go, callbackData);
		}

		public void OnSplashScreenLoaded(AssetReference assetRef, GameObject go, object callbackData)
		{
			method_8("OnSplashScreenLoaded", assetRef, go, callbackData);
		}

		public void OnSplashScreenFinished()
		{
			method_8("OnSplashScreenFinished");
		}

		public void LoadStartupAssets()
		{
			method_8("LoadStartupAssets");
		}

		public void OnColorSwitcherLoaded(AssetReference assetRef, GameObject go, object callbackData)
		{
			method_8("OnColorSwitcherLoaded", assetRef, go, callbackData);
		}

		public void OnSpecialEventVisualMgrLoaded(AssetReference assetRef, GameObject go, object callbackData)
		{
			method_8("OnSpecialEventVisualMgrLoaded", assetRef, go, callbackData);
		}

		public void OnSoundConfigLoaded(AssetReference assetRef, GameObject go, object callbackData)
		{
			method_8("OnSoundConfigLoaded", assetRef, go, callbackData);
		}

		public void OnTextInputGUISkinLoaded(AssetReference assetRef, GameObject go, object callbackData)
		{
			method_8("OnTextInputGUISkinLoaded", assetRef, go, callbackData);
		}

		public void OnStartupAssetFinishedLoading()
		{
			method_8("OnStartupAssetFinishedLoading");
		}

		public void OnBoxLoaded(AssetReference assetRef, GameObject go, object callbackData)
		{
			method_8("OnBoxLoaded", assetRef, go, callbackData);
		}

		public void LoadMode()
		{
			method_8("LoadMode");
		}

		public bool ShouldUseSceneUnloadDelays()
		{
			return method_11<bool>("ShouldUseSceneUnloadDelays", Array.Empty<object>());
		}

		public bool ShouldUseSceneLoadDelays()
		{
			return method_11<bool>("ShouldUseSceneLoadDelays", Array.Empty<object>());
		}

		public void PostUnloadCleanup()
		{
			method_8("PostUnloadCleanup");
		}

		public void DestroyAllObjectsOnModeSwitch()
		{
			method_8("DestroyAllObjectsOnModeSwitch");
		}

		public bool ShouldDestroyOnModeSwitch(GameObject go)
		{
			return method_11<bool>("ShouldDestroyOnModeSwitch", new object[1] { go });
		}

		public void CacheModeForResume(Mode mode)
		{
			method_8("CacheModeForResume", mode);
		}

		public bool DoesModeShowBox(Mode mode)
		{
			return method_11<bool>("DoesModeShowBox", new object[1] { mode });
		}

		public void LoadModeFromModeSwitch()
		{
			method_8("LoadModeFromModeSwitch");
		}

		public void OnBoxReloaded(AssetReference assetRef, GameObject go, object callbackData)
		{
			method_8("OnBoxReloaded", assetRef, go, callbackData);
		}

		public void OnFatalError(FatalErrorMessage message, object userData)
		{
			method_8("OnFatalError", message, userData);
		}
	}
}
